package com.company.config;


import com.company.bean.Person;
import org.springframework.context.annotation.*;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
/*
    给容器中注册组件
      1包扫描+组件标注注解（@Controller，@Service，@Repository，@Commpent）
      2@Bean导入第三方包里面的组件
      3@Import快速给容器导入个组件
           @Import(导入到容器中的组件)，容器中就会自动注册这个组件，id默认是全类名
           2 ImportSelector 返回需要导入组件的全类名数组
           3 ImportBeanDefinitionRegistrar 手动注册bean到容器中
      4：使用spring提供的FactoryBean
           1 默认获取的是工厂bean调用的getObject创建的对象
           2 要获取工厂Bean本身，我们需要给id前面加一个&&
 */

@Configuration //告诉spring这是一个配置类类似.xml
//@ComponentScan(value = "com.company",
////        excludeFilters = {
////        @ComponentScan.Filter(type = FilterType.ANNOTATION,
////        classes = {Controller.class, Service.class}),
//        @ComponentScan.Filter(type = FilterType.CUSTOM,classes = {MyTypeFilter.class}))//包扫描
//excludeFilters 排除那些，接收个数组
//FilterType.Custom 自定义规则
//@ComponentScans(value = {
//        @ComponentScan(value = "com.company",includeFilters = {
//                @ComponentScan.Filter(type = FilterType.CUSTOM,classes = {MyTypeFilter.class})
//        })
//})
public class MainConfig {

    @Bean("person")//给容器中注册一个Bean，类型为返回值，id默认是用方法命作为id
    public Person person1() {
        return new Person("lisi", 20);
    }
}
